from sqlalchemy import JSON, Column, Integer, String, Text, Date, Float, Enum
from sqlalchemy.ext.declarative import declarative_base
from .base import Base

class News(Base):
    """
    创建新闻记录，其中包含缩略图信息
    news_item = News(
        title="突发新闻标题",
        content="这里是新闻的内容。",
        # ... 其他字段 ...
        thumbnail={"data": "iVBORw0KGgoAAAANSUhEUgAAAAUA...", "contentType": "image/jpeg"}
    )
    """
    __tablename__ = 'news'

    id = Column(Integer, primary_key=True)
    title = Column(String(255), nullable=False)  # 新闻标题
    content = Column(Text, nullable=False)  # 新闻内容
    source = Column(String(255), nullable=False)  # 来源
    published_date = Column(Date, nullable=False)  # 发布日期
    author = Column(String(255))  # 作者
    url = Column(String(255))  # 新闻的原始链接
    likes = Column(Integer, default=0)  # 点赞数
    dislikes = Column(Integer, default=0)  # 点踩数
    comments = Column(Integer, default=0)  # 评论数
    news_category = Column(Enum('quick', 'regular', name='news_category'))  # 新闻类别，快讯或常规新闻
    thumbnail = Column(JSON, nullable=True)  # 缩略图，存储二进制数据


    def __repr__(self):
        return f"<News(id={self.id}, title='{self.title}', source='{self.source}', published_date='{self.published_date}', news_category='{self.news_category}')>"